iT邦幫忙

DAY 27
0

x86 android 設備與外部硬體溝通研究系列 第 27

x86 android 設備與外部硬體溝通研究 - (27/30)

  • 分享至 

  • xImage
  •  

還記得之前的SerialDriver 用 VID/PID 對照表,決定使用的驅動程式嗎?

最早我以為 arduino spec 上寫著他是用FTDI 的 IC (windows arduino IDE 裡面有 FTDI 的driver) ,所以我連續好多天都在爬 FTDI serial driver 的內容&參數。直到某天把USB device 描述爬出來後,在對應serial driver source code中的下面這段,才知道他一直採用的是 CDC driver , arduino USB CDC driver 中看到有 3 組interface ( control (1)/ Burk (2)/ HID (1)) , 合計 4 個 endpoint

    public static Map<Integer, int[]> getSupportedDevices() {
        final Map<Integer, int[]> supportedDevices = new LinkedHashMap<Integer, int[]>();
        supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ARDUINO),
// 這邊定義 Arduino device 的 VIP 跟 PID
                new int[] {
                        UsbId.ARDUINO_UNO,
                        UsbId.ARDUINO_UNO_R3,
                        UsbId.ARDUINO_MEGA_2560,
                        UsbId.ARDUINO_MEGA_2560_R3,
                        UsbId.ARDUINO_SERIAL_ADAPTER,
                        UsbId.ARDUINO_SERIAL_ADAPTER_R3,
                        UsbId.ARDUINO_MEGA_ADK,
                        UsbId.ARDUINO_MEGA_ADK_R3,
                        UsbId.ARDUINO_LEONARDO,
                });
        supportedDevices.put(Integer.valueOf(UsbId.VENDOR_VAN_OOIJEN_TECH),
                new int[] {
                    UsbId.VAN_OOIJEN_TECH_TEENSYDUINO_SERIAL,
                });
        supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ATMEL),
                new int[] {
                    UsbId.ATMEL_LUFA_CDC_DEMO_APP,
                });
        supportedDevices.put(Integer.valueOf(UsbId.VENDOR_LEAFLABS),
                new int[] {
                    UsbId.LEAFLABS_MAPLE,
                });
        return supportedDevices;
    }

}

爬過 CDC serial driver 後,發現他原本的 setBaudRate 根本沒寫完,順手依照 setParameters() 的格式完如下:

		@Override
		public int setBaudRate(int baudRate) throws IOException {
			// TODO Auto-generated method stub
			//return 0;
			setParameters(
					baudRate, 	//baudRate
            		8,		//dataBits
            		1,		//stopBits
            		0 		//parity
            		);
			return baudRate;
		}

    }

重新打包 JAR libaray & App push install 後 .... 還是收不到資料 XD

看來有得玩了,繼續K USB CDC spec 看看能不能找出端倪好了

我們明天見!


上一篇
x86 android 設備與外部硬體溝通研究 - (26/30)
下一篇
x86 android 設備與外部硬體溝通研究 - cdc-acm.c (28/30)
系列文
x86 android 設備與外部硬體溝通研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言